package qgs.ddjdispachingsystem.ddj.wcs.service;


import qgs.ddjdispachingsystem.ddj.wcs.entity.WeightingPLCEntity;

import java.util.List;

/**
 * @Author: 蔡翔
 * @Date: 2019/11/13 9:41
 * @Version 1.0
 */
public interface WeighingPLCService {
    /**
     * Arg
     *      type
     *          1 代表 入库；； 2 代表 出库
     *      position
     *          1 代表 第一平台
     *          2 代表 第二平台
     *          3 代表 第三平台
     *          。。。
     * return
     *          -1  代表 IOServer 写入异常
     *          -2  代表 IOServer 写入失败
     *          0   代表写入 成功
     *
     * status : work
     * 业务：步骤第一步，先给称重plc发 现在去称重指令。
     **/
    Integer warehousingBegin(Integer type, Integer position);

    /**
     * author ：蔡翔
     * 监听 第n 个平台 weighting PLC 传感器是否异常（报警）
     *
     * 参数：
     *      1 代表 第一平台
     *      2 代表 第二平台
     *      3 代表 第三平台
     *      。。。
     * 返回：
     *      成功：返回的是List<char> 数组，这个数组是二进制的。每一位为1 都代表一种异常。
     *      失败：返回的是null（原因：position不正确 、 IOServer读取异常）
     * 业务：这个需要时时刻刻监听传感器是否有问题。
     * status : work
     **/
    List<Character> getSensorAlarmMessage(Integer position);

    /**
     * author ：蔡翔
     * 监听 第n 个平台 weighting PLC 所有信息（报警、height、weight）
     *
     * 参数：(1)
     *      1 代表 第一平台
     *      2 代表 第二平台
     *      3 代表 第三平台
     *
     *      (2)
     *      1  代表入库
     *      2  代表出库
     *      。。。
     * 返回：
     *      1.成功 ： 返回的是你要查询的 当前这个平台的称重信息
     *          status 0   代表成功
     *      2.失败 ： 返回的是null（原因：position不正确 、 IOServer读取异常）
     *          status 1  代表称重失败或者 传感器异常
     *          status 2  代表IOServer写入失败
     *          status 3  代表IOServer写入异常
     * 业务：步骤第二步，差不多要等待2s，去哪里plc 取 高度重量的最终值。
     * status : work
     **/
    WeightingPLCEntity getCargoAllMessage(Integer position, Integer type);
}